package com.zt.english.utils

import android.app.Activity
import android.content.Context
import android.net.ConnectivityManager
import android.util.DisplayMetrics
import android.util.Log

import com.zt.english.App


/**
 * **Title: **系统相关小工具<br></br>
 * **Description: **这里写类的详细描述
 * **Copyright 2019-2099 卓创科技 - Powered By 研发中心**
 *
 * @author 赵伟
 *
 *
 * 修订历史:
 *
 *  * 版本&nbsp;&nbsp;&nbsp;&nbsp;修改日期&nbsp;&nbsp;&nbsp;&nbsp;作　者&nbsp;&nbsp;&nbsp;&nbsp;变更内容
 * <hr></hr>
 *  * v1.0&nbsp;&nbsp;&nbsp;&nbsp;2019-09-26&nbsp;&nbsp;&nbsp;&nbsp;赵伟&nbsp;&nbsp;&nbsp;&nbsp;创建类
 *
 */
object SystemUtil {
    /***
     * **Title: **获取客户端ID<br></br>
     * **Description: **包含username、imei、client密钥拼接
     *
     * @param userId 用户名
     * @param context 上下文
     *
     * @return [String] 客户端ID
     *
     */
//    fun getMQTTClientId(userId: String, context: Activity?): String {
//        val encoded: String = Base64Utils.getBase64("yyx_ent_mqtt:yyx_ent_mqtt")
//        return Base64Utils.getBase64("ent$userId").toString() + ":" + userId + ":" + encoded
//    }

    /**
     * **Title: **获取状态栏高度 主要用于沉浸式自动顶出高度padding 在不设置颜色的时候需要<br></br>
     * **Description: **这里写方法的详细描述
     *
     * @param context 上下文对象
     * @return []
     * @author 朱彤
     *
     *
     * 修订历史:
     *
     *  * 修改日期&nbsp;&nbsp;&nbsp;&nbsp;作　者&nbsp;&nbsp;&nbsp;&nbsp;变更内容
     * <hr></hr>
     *  * 20190928&nbsp;&nbsp;&nbsp;&nbsp;朱彤&nbsp;&nbsp;&nbsp;&nbsp;创建方法
     *
     */
    fun getStateBarHeight(context: Context): Int {
        // 获得状态栏高度
        val resourceId =
            context.resources.getIdentifier("status_bar_height", "dimen", "android")
        return context.resources.getDimensionPixelSize(resourceId)
    }

    /**
     * **Title: **px像素适配不同屏幕的手机分辨率<br></br>
     * **Description: **这里写方法的详细描述
     *
     * @param dp
     * @return [int]
     * @author 朱彤
     *
     *
     * 修订历史:
     *
     *  * 修改日期&nbsp;&nbsp;&nbsp;&nbsp;作　者&nbsp;&nbsp;&nbsp;&nbsp;变更内容
     * <hr></hr>
     *  * 20191121&nbsp;&nbsp;&nbsp;&nbsp;朱彤&nbsp;&nbsp;&nbsp;&nbsp;创建方法
     *
     */
    fun dp2px(dp: Float): Int {
        val density: Float = App.instance.resources.displayMetrics.density
        return (dp * density + 0.5f).toInt()
    }

    /**
     * **Title: **获取屏幕宽高封装体对象<br></br>
     * **Description: **这里写方法的详细描述
     *
     * @param activity activity
     * @return []
     * @author 朱彤
     *
     *
     * 修订历史:
     *
     *  * 修改日期&nbsp;&nbsp;&nbsp;&nbsp;作　者&nbsp;&nbsp;&nbsp;&nbsp;变更内容
     * <hr></hr>
     *  * 20191204&nbsp;&nbsp;&nbsp;&nbsp;朱彤&nbsp;&nbsp;&nbsp;&nbsp;创建方法
     *
     */
    fun getDisplayMetrics(activity: Activity): DisplayMetrics {
        val dm = DisplayMetrics()
        activity.windowManager.defaultDisplay.getMetrics(dm)
        return dm
    }

    /**
     * **Title: **检测网络是否链接<br></br>
     * **Description: **这里写方法的详细描述
     *
     * @param context 上下文
     * @return []
     * @author ztind
     *
     *
     * 修订历史:
     *
     *  * 修改日期&nbsp;&nbsp;&nbsp;&nbsp;作　者&nbsp;&nbsp;&nbsp;&nbsp;变更内容
     * <hr></hr>
     *  * 20191212&nbsp;&nbsp;&nbsp;&nbsp;朱彤&nbsp;&nbsp;&nbsp;&nbsp;创建方法
     *
     */
    fun networkConnect(context: Context): Boolean {
        val connectivityManager = context.applicationContext
            .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val info = connectivityManager.activeNetworkInfo
        return if (info != null && info.isAvailable) {
            val name = info.typeName
            Log.i("NotifyFragmentViewModel", "NotifyFragmentViewModel-当前网络名称：$name")
            true
        } else {
            Log.i("NotifyFragmentViewModel", "NotifyFragmentViewModel-没有可用网络")
            false
        }
    }
}
